package lambdasinaction.chap9;

/**
 * 假设自己是一个流行Java绘图库的设计者
 * 该接口定义了一个简单的可缩放形状必须支持的很多方法
 * Created by ThinkPad on 2017/8/24.
 */
public interface Resizable {
    int getWidth();
    int getHeight();
    void setWidth(int width);
    void setHeight(int height);
    void setAbsoluteSize(int width, int height);
//    库上线使用几个月后,你收到很多请求,要求你更新Resizable的实现,
//    让Square,Rectangle以及其他的形状都能支持setRelativeSize方法.
//    为了满足这些新的需求,你发布了第二版API
//    void setRelativeSize(int wFactor, int hFactor);
//    为了兼容性,使用默认方法
    default void setRelativeSize(int wFactor, int hFactor) {
        setAbsoluteSize(getWidth() / wFactor,getHeight() / hFactor);
    }
}
